/**
 * 
 */
package ar.com.gepp.torneo.entidades.impl;

import java.io.File;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import ar.com.gepp.torneo.comparators.PosicionComparator;
import ar.com.gepp.torneo.parsers.ParserFixture;

/**
 * @author gpidote
 * 
 */

public class Liga {
	private String nombre;
	private List<Grupo> ediciones = new ArrayList<Grupo>(0);
	private List<Equipo> equipos = new ArrayList<Equipo>(0);

	public List<Grupo> getEdiciones() {
		return ediciones;
	}

	public void setEdiciones(List<Grupo> ediciones) {
		this.ediciones = ediciones;
	}

	public String getNombre() {
		return nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	public List<Equipo> getEquipos() {
		return equipos;
	}

	public void setEquipos(List<Equipo> equipos) {
		this.equipos = equipos;
	}

	/**
	 * Crea una nueva edicion con los equipos participantes
	 * 
	 * @param equipos
	 * @param fixture
	 * @throws Exception
	 */
	public void nuevaEdicion(List<Equipo> equipos) throws Exception {
		File file = new File("src/resources/ligas/" + equipos.size() + ".xml");

		Fixture fixture = ParserFixture.parserXmlToFixture(file, equipos, true);

		Grupo edicion = new Grupo();
		// agrega el fixture
		edicion.setFix(fixture);
		// crea las posiciones
		List<Posicion> posiciones = new ArrayList<Posicion>();
		for (Equipo equipo : equipos) {
			Posicion pos = new Posicion();
			pos.setEquipo(equipo);
			posiciones.add(pos);
		}
		edicion.setEquipos(posiciones);
		// agrego la ultima edicion
		ediciones.add(edicion);
	}

	public Grupo getUltimaEdicion() {
		return ediciones.get(ediciones.size() - 1);
	}

	public void jugarFechaActual() {
		getUltimaEdicion().jugarFechaActual();
	}

	public Boolean edicionFinalizada() {
		return getUltimaEdicion().finalizada();
	}

	public List<Fecha> getFechas() {
		return getUltimaEdicion().getFix().getFechas();
	}

	public List<Posicion> getUltimasPosiciones() {
		Collections.sort(getUltimaEdicion().getEquipos(), new PosicionComparator());
		return getUltimaEdicion().getEquipos();
	}
}
